<?php
/**
 * Autor:   Miguel A. Zilli
 * Email:   miguelzilli@gmail.com
 */

class AcoproduccionesController extends AppController{
    var $name = 'Acoproducciones';
    var $helpers=array('Ajax','Javascript','DatePicker','Number');
    var $uses = array('Acoproduccion','Producto','Actividadtipo','Productor','Agroquimicoxproduccion',
        'Agroquimico'
    );

    function ver($id){
        $showAddLink=false;
        $acoproduccion=$this->Acoproduccion->find('first',array('conditions'=>'Acoproduccion.id='.$id));
        $id_algodon=$this->Producto->field('Producto.id',array('Producto.nombre_prod LIKE'=>'ALGODON'));
        //si la produccion no es de algodon buscar sus agroquimicos
        if($acoproduccion['Acoproduccion']['producto_id']!=$id_algodon){
            $tmp=$this->Agroquimicoxproduccion->find('all',array(
                    'conditions'=>'Agroquimicoxproduccion.acoproduccion_id='.$id,
                ));
            $agxprod=null;
            foreach($tmp as $t){
                $agxprod[]=$t+$this->Agroquimico->Agroquimicotipo->find('first',array(
                        'conditions'=>'Agroquimicotipo.id='.$t['Agroquimico']['agroquimicotipo_id'],
                        'recursive'=>'-1'
                    ));
            }
            $this->set('agroquimicosxproduccion',$agxprod);
            $showAddLink=true;
        }
        $this->set('acoproduccion',$acoproduccion);
        $this->set('showAddLink',$showAddLink);
    }

    function agregar($id_productor){
        $this->__checkPermisos($id_productor);
        if (!empty($this->data)){
            $this->data['Acoproduccion']['productor_id']=$id_productor;
            if ($this->Acoproduccion->save($this->data)){
                $id_produccion=$this->Acoproduccion->getID();
                $id_algodon=$this->Producto->field('Producto.id',array('Producto.nombre_prod LIKE'=>'ALGODON'));
                //guardar agroquimicos si la produccion NO es de algodon
                if (($this->data['Acoproduccion']['producto_id']!=$id_algodon)&&
                    (!empty($this->data['Agroquimicoxproduccion']))){
                    foreach($this->data['Agroquimicoxproduccion'] as $key=>$datos){
                        $this->data['Agroquimicoxproduccion'][$key]['acoproduccion_id']=$id_produccion;
                        $this->Agroquimicoxproduccion->create($this->data['Agroquimicoxproduccion'][$key]);
                        if ($this->Agroquimicoxproduccion->validates()){
                            $this->Agroquimicoxproduccion->save($this->data['Agroquimicoxproduccion'][$key]);
                        }
                    }
                }
                $this->Session->setFlash('Operacion realizada correctamente.');
                $this->redirect('/productores/ver/'.$id_productor);
            }else{
                $this->Session->setFlash('Error: No se pudo realizar la operacion.');
            }
        }
        $this->set('productor',$this->Productor->find('first',array(
                    'conditions'=>'Productor.id='.$id_productor,
                    'recursive'=>'-1'
                )));
        $this->set('predios',$this->Productor->Predio->find('list',array(
                    'fields'=>'Predio.dom_pred',
                    'conditions'=>array('Predio.productor_id'=>$id_productor),
                    'order'=>'Predio.dom_pred ASC'
                )));
        $this->set('productos',$this->Producto->find('superlist',array(
                    'fields'=>array('Producto.id','Producto.nombre_prod','Producto.variedad_prod'),
                    'order'=>array('Producto.nombre_prod'=>'ASC','Producto.variedad_prod'=>'ASC'),
                    'conditions'=>array('Producto.actividadtipo_id'=>$this->ID_AGRICOLA)
                )));
        $anio=date('Y');
        for ($i=($anio); $i<=($anio); $i++){
            $j=$i+1;
            $campanias["{$i}-{$j}"]="{$i}-{$j}";
        }
        $this->set('campanias',$campanias);
        $this->Session->write('cont',0);
    }

    function editar($id){
        $id_productor=$this->Acoproduccion->field('Acoproduccion.productor_id',array('Acoproduccion.id'=>$id));
        $this->__checkPermisos($id_productor);
        if(!empty($this->data)){
            if ($this->Acoproduccion->save($this->data)){
                //eliminar agroquimicos de las producciones de algodon
                $this->__eliminarAgroquimicos();
                $this->Session->setFlash('Operacion realizada correctamente.');
                $this->redirect('/productores/ver/'.$this->data['Acoproduccion']['productor_id']);
            }else{
                $this->Session->setFlash('Error: No se pudo realizar la operacion.');
            }
        }
        if(empty($this->data)){
            $this->data=$this->Acoproduccion->read(null,$id);
        }
        $this->set('predios',$this->Productor->Predio->find('list',array(
                    'fields'=>'Predio.dom_pred',
                    'conditions'=>array('Predio.productor_id'=>$this->data['Acoproduccion']['productor_id']),
                    'order'=>'Predio.dom_pred ASC'
                )));
        $this->set('productos',$this->Producto->find('superlist',array(
                    'fields'=>array('Producto.id','Producto.nombre_prod','Producto.variedad_prod'),
                    'order'=>array('Producto.nombre_prod'=>'ASC','Producto.variedad_prod'=>'ASC'),
                    'conditions'=>array('Producto.actividadtipo_id'=>$this->ID_AGRICOLA)
                )));
        $anio=date('Y');
        for ($i=($anio); $i<=($anio); $i++){
            $j=$i+1;
            $campanias["{$i}-{$j}"]="{$i}-{$j}";
        }
        $this->set('campanias',$campanias);
    }

    function __eliminarAgroquimicos(){
        $id_algodon=$this->Producto->field('Producto.id',array('Producto.nombre_prod LIKE'=>'ALGODON'));
        $id_producciones=$this->Acoproduccion->find('list',array(
                'fields'=>'Acoproduccion.id',
                'conditions'=>'Acoproduccion.producto_id='.$id_algodon,
                'recursive'=>'-1'
            ));
        $this->Agroquimicoxproduccion->deleteAll(array(
                'Agroquimicoxproduccion.acoproduccion_id'=>$id_producciones));
    }

    function eliminar($id=null){
        $id_productor=$this->Acoproduccion->field('Acoproduccion.productor_id',array('Acoproduccion.id'=>$id));
        $this->__checkPermisos($id_productor);
        if($this->Acoproduccion->del($id)){
            $this->Session->setFlash('Operacion realizada correctamente.');
            $this->redirect('/productores/ver/'.$id_productor);
        }else{
            $this->Session->setFlash('Error: No se pudo realizar la operacion.');
            $this->redirect('/productores/ver/'.$id_productor);
        }
    }

/*----------------------------------------
 * LLAMADAS AJAX
 * ---------------------------------------*/
    function add_agroquimico(){
        Configure::write("debug",0);
        $x=$this->Session->read('cont')+1;
        $this->Session->write('cont',$x);
        $this->set("id", $x);
        $agroquimicos=$this->Agroquimico->find('all',array(
                'fields'=>array('Agroquimico.id','Agroquimicotipo.nombre_tipo_ag','Agroquimico.nombre_agro'),
                'order'=>array('Agroquimicotipo.nombre_tipo_ag'=>'ASC','Agroquimico.nombre_agro'=>'ASC')
            ));
        $this->set('agroquimicos',Set::combine($agroquimicos, '{n}.Agroquimico.id',array(
                    '%s: %s',
                    '{n}.Agroquimicotipo.nombre_tipo_ag',
                    '{n}.Agroquimico.nombre_agro'
                )));
        $this->render("","", "../elements/add_agroquimico");
    }
}
?>